#ifndef SDK_OHOS_API_OHOS_MEDIA_TRACK_INTERFACE_H_
#define SDK_OHOS_API_OHOS_MEDIA_TRACK_INTERFACE_H_

#include <string>
#include "api/ref_count.h"
#include "api/media_stream_interface.h"

namespace ohoswebrtc {

class OHOSMediaTrackInterface : public webrtc::RefCountInterface {
  public:
  enum OHOSMediaTrackState {
    OHOSMediaTrackState_Live,
    OHOSMediaTrackState_End,
  };

  enum OHOSMediaTrackKind {
    OHOSMediaTrackKind_Audio,
    OHOSMediaTrackKind_Video,
  };

  /** The state of the track. */
  virtual OHOSMediaTrackState state() const = 0;
  /**
  * The kind of track. For example, "audio" if this track represents an audio
  * track and "video" if this track represents a video track.
  */
  virtual const std::string kind() const = 0;
  /** An identifier string. */
  virtual const std::string id() const = 0;

  /** The enabled state of the track. */
  virtual bool enabled() const = 0;

  /** set enabled state of the track. */
  virtual bool set_enabled(bool enable) = 0;

  /**
  * The native MediaStreamTrackInterface passed in or created during
  * construction.
  */
  virtual rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> track() = 0;
  
 protected:
  ~OHOSMediaTrackInterface() {}
};
}

#endif